Oracle - <<< BLOQUEOS EN LA BD >>>

 
Vista:

<<< BLOQUEOS EN LA BD >>>

Publicado por TECNOARTURO (24 intervenciones) el 27/10/2002 15:59:30
Buen dia a todos,
Tengo problemas en mi BD, ya que esta se bloquea constantemente, de este problema ya pidieron ayuda en este foro y la recomendacion que dieron fue que utilizaran el query que estoy detallando al final.
ok.. ya corri este query y me devuelve datos de las tablas que estan bloqueadas.

Ahora mi pregunta es la siguiente:
QUE TENGO QUE HACER???????

------PARA EVITAR QUE VUELVA A SUCEDES....
------PARA DESBLOQUEARLAS.......

--------------------------------------------------------------------
select oracle_username, owner, object_name, object_type, session_id, locked_mode
from v$locked_object v, dba_objects d where
v.object_id = d.object_id
order by oracle_username,session_id
--------------------------------------------------------------------

AGRADECERE MUCHO SU AYUDA.

Atte.
ARTURO ORDOÑEZ.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:<<< BLOQUEOS EN LA BD >>>

Publicado por Harold (697 intervenciones) el 28/10/2002 15:38:31
Oracle no bloquea (y si lo hace es por milisegundos), los bloqueos y los deadlocks se deben a una mala programacion.

Por ejemplo:
Bloqueos se pueden dar cuando actualizas mucho tus llaves primarias y estas nos son secuencias.
Cuando la consecutividad la llevas por una tabla y no por secuencias.

Tienes mal definida la BD:
1. Muy poco SGA
2. Incrementa el parametro SORT_AREA_SIZE y SORT_AREA_RETAINED_SIZE
3. Redefine los segmentos de rollback que hayan muchos pequeños (por lo menos 1 por cada cuatro transacciones).

Saludes

Harold

PD. Ese query yo te lo di cierto??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:<<< BLOQUEOS EN LA BD >>>

Publicado por Arturo Medina Salazar (3 intervenciones) el 28/10/2002 19:38:59
disculpa pero, eso se debe a las aplicaciones, y lo que comenta Harold es lo mejor que puedes hacer define bien los parametros en el Init.ora del oracle y en caso de que te sirva aqui esta un script para saques los bloqueos .
-- Sesiones que provocan bloqueos
SELECT * FROM sys.V_$LOCKED_OBJECT

-- Objetos bloqueados (con NOWAIT)
SELECT * FROM DBA_OBJECTS
WHERE object_id IN (
SELECT object_id FROM sys.V_$LOCKED_OBJECT)

SELECT
o.OWNER,
o.OBJECT_NAME,
--l.OBJECT_ID,
l.SESSION_ID,
l.ORACLE_USERNAME,
l.OS_USER_NAME,
l.PROCESS
FROM
sys.V_$LOCKED_OBJECT l,
DBA_OBJECTS o
WHERE
l.OBJECT_ID=o.OBJECT_ID

SELECT
se.SID,
se.SERIAL#,
o.OBJECT_NAME,
lob.ORACLE_USERNAME,
lob.OS_USER_NAME,
lob.SESSION_ID,
lob.PROCESS,
lob.LOCKED_MODE,
o.OWNER
FROM
v$session se,
sys.V_$LOCKED_OBJECT lob,
DBA_OBJECTS o
WHERE
se.SID = lob.SESSION_ID AND
lob.OBJECT_ID=o.OBJECT_ID AND
se.USERNAME = lob.ORACLE_USERNAME

---- Despues solo eliminas los bloqueos con el SID y el SERIAL#----

alter system kill session 'SID,SERIAL#',

Pero si defines bien todo no se deberian producir bloqueos a menos que tu tabla en la base sea muy modificada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar